package negocio;

import java.util.ArrayList;


/**
 * Utilizado para encapsular as mensagens de erros entre as camadas logicas.
 * @author Fernando Franzini
 * @version 1.0 - 13/06/2007
 */
public final class Erros {
    
    private ArrayList<String> erros;
    private final static String OBRIGATORIO = "Campo Obrigatório - ";
    private final static String OPERACAO_INVALIDA = "Operação Inválida - ";
    private final static String INVALIDO = "Campo inválido - ";
    private final static String TAMANHO  = "<C> precisar possuir <T> ou mais caractere(s).";
    private final static String TAMANHOMENOR  = "<C> precisar possuir <T> ou menos caractere(s).";
    private final static String DUPLICADO  = "Registro duplicado, cadastro já existente, ";
    public Erros() {
        erros = new ArrayList<String>();
    }
    
    public Erros(String erro) {
        this();
        adicionarErro(erro);
    }    
    
    public void adicionarErro(String erro) {
        if (! erros.contains(erro)) {
            erros.add(erro);
        }
    }
    
    public void campoObrigatorio(String campo) {
        this.adicionarErro(OBRIGATORIO+campo);
    }

    public void operacaoInvalida(String campo) {
        this.adicionarErro(OPERACAO_INVALIDA+campo);
    }

    public void campoInvalido(String campo) {
        this.adicionarErro(INVALIDO+campo);
    }
    
    public void campoTamanho(String campo, int tamanho){
        String mess = TAMANHO.replace("<C>",campo);
        mess = mess.replace("<T>",tamanho+"");
        this.adicionarErro(mess);
    }
    
    public void campoTamanhoMenor(String campo, int tamanho){
        String mess = TAMANHOMENOR.replace("<C>",campo);
        mess = mess.replace("<T>",tamanho+"");
        this.adicionarErro(mess);
    }

    public void campoTamanho(String campo){
        this.adicionarErro(campo + " - campo deve possuir no máximo 35 caracteres");
    }
    
    public void registroDuplicado(String campo) {
        this.adicionarErro(DUPLICADO + campo);
    }
 
    public String[] getErros() {
        return erros.toArray(new String[0]);
    }    
    
    public void limpar() {
         erros.clear();
    }
    
    public boolean existe() {
        return erros.isEmpty() ? false : true;
    }
}
